今天要挑戰的是實作一個在數學上有許多應用的帕斯卡三角形!可以先參考Leetcode上的動畫說明。
https://leetcode.com/problems/pascals-triangle/
Given an integer numRows, return the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it
Example 1:
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Example 2:
Input: numRows = 1
Output: [[1]]
這題希望我們實作一個帕斯卡三角形,題目會給我們一個整數,我們要做出相對應層數的帕斯卡三角形,關於帕斯卡三角形詳細的規則和內容,可以參考維基百科。
https://zh.wikipedia.org/wiki/%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%E5%BD%A2
在python中我們可以用很直接明瞭的方法,先把一層的情況當作特例,而後建立二維陣列,接著我們可以根據題目給我們的整數,當作迴圈執行的次數,每次對每一行再做一次迴圈,最後和第一個一定是整數1,接著的每個元素根據前一行相對位置的元素相加,迴圈全部跑完,就是答案了!
以下為python3的程式碼
class Solution:
def generate(self, numRows: int) -> List[List[int]]:
if numRows == 1:
return [[1]]
ans = [[1], [1,1]]
for i in range(2, numRows):
deck = [1]
for j in range(1, i):
deck.append(ans[i-1][j-1] + ans[i-1][j])
deck.append(1)
ans.append(deck)
return ans